Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.
Abfragen zeigen in der Regel die Felder der zugrunde liegenden Tabellen in ihren Spalten an. Manchmal liefern diese Felder jedoch nicht genau die gewünschten Daten – beispielsweise, weil wir in einer Spalte einer Abfrage den kompletten Namen eines Kunden in der Form „Minhorst, André“ darstellen wollen. Oder wir möchten nicht den Inhalt eines Datumsfeldes, sondern nur die dort enthaltene Jahreszahl ausgeben. Ein anderes Beispiel sind echte Berechnungen wie beispielsweise der Preis für eine Bestellposition, der sich aus dem Einzelpreis, der Menge und dem Mehrwertsteuersatz zusammensetzt. Wie Du solche Berechnungen in Abfragen realisieren kannst, zeigt dieser Artikel.
Beispieldatenbank
Die Beispiele dieses Artikels findest Du in der Datenbank 2204_BerechneteFelder.accdb.
Was sind „Berechnete Felder“
„Berechnete Felder“ ist eigentlich ein irreführender Ausdruck. Zwar ist ein Zweck von berechneten Feldern auch das Anstellen von Berechnungen, wie in der Einleitung am Beispiel von Preisen von Bestellpositionen. Allerdings würden wir es eher als Ausdruck bezeichnen, denn nicht immer enthält ein berechnetes Feld auch eine mathematische Berechnung.
Unter den Begriff „Berechnete Felder in Abfragen“ gehören auch das Zusammenführen der Inhalte mehrerer Felder wie zum Beispiel für die Kombination aus Anrede und Nachname oder auch der Einsatz von VBA-Funktionen, die auf den Inhalt anderer Felder angewendet werden. Schon den Einsatz der Funktion Datum() als Wert eines Feldes würden wir als berechnetes Feld bezeichnen, und das Gleiche gilt für Felder, in denen eine VBA-Funktion den Inhalt anderer Felder als Parameter verwendet – zum Beispiel =Jahr(Bestelldatum) zum Ausgeben der Jahreszahl eines Bestelldatums.
Und es wird noch spannender: Wir können nicht nur die eingebauten Funktionen von VBA zur Berechnung von Ausdrücken in Abfragen nutzen, sondern sogar benutzerdefinierte Funktionen dort einsetzen. Wenn die VBA-Bibliothek also nicht die passende Funktion bietet, bauen wir uns diese einfach selbst zusammen. Wie all dies funktioniert, schauen wir uns in den folgenden Abschnitten an.
Berechneter Ausdruck auf Basis von Abfragefeldern
Als erstes Beispiel wollen wir eine tatsächliche mathematische Berechnung durchführen, und zwar zur Ermittlung des Preises einer Position einer Bestellung. Dazu erstellen wir eine neue Abfrage und fügen die Tabelle tblBestellpositionen zum Abfrageentwurf hinzu.
Dann ziehen wir aus dieser Tabelle die Felder ID, Einzelpreis und Menge in das Entwurfsraster. Schließlich fügen wir das gewünschte berechnete Feld hinzu, indem wir einfach in der nächsten leeren Spalte den folgenden Ausdruck eintragen:
Preis: [Einzelpreis]*[Menge]
Dann speichern wir die Abfrage unter dem Namen qryEinzelpreisMalMenge. Der Abfrageentwurf sieht nun wie in Bild 1 aus.
Bild 1: Beispiel für ein berechnetes Feld
Schauen wir uns nun das Ergebnis in der Datenblattansicht an, erhalten wir die korrekt berechneten Werte wie in Bild 2.
Bild 2: Das berechnete Feld in der Datenblattansicht
Zur Berechnung herangezogene Felder, wie in diesem Beispiel die Felder Einzelpreis und Menge, müssen übrigens nicht zum Entwurfsraster hinzugefügt und dementsprechend auch nicht angezeigt werden. Für die Berechnung reicht die Angabe des berechneten Feldes allein. Die Felder Einzelpreis und Menge haben wir nur hinzugefügt, damit wir das Ergebnis der Berechnung kontrollieren können.
Berechnung um Mehrwertsteuer erweitern
In manchen Rechnungen landen die Mehrwertsteuer beziehungsweise der Bruttobetrag erst im Endergebnis mit der Summe aller Positionen einer Bestellung. Wir können den Bruttobetrag allerdings auch direkt zu jeder Zeile hinzufügen – genau wie den Betrag der Mehrwertsteuer. Das haben wir im Beispiel aus Bild 3 erledigt. Dabei haben wir die folgenden berechneten Ausdrücke verwendet:
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
Testzugang
eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel
diesen und alle anderen Artikel mit dem Jahresabo